package com.ruoyi.personnel.oa.uploadAndDownload.service;

import org.springframework.http.MediaType;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.*;

@Service
public class UploadService {
    /**
     * 单文件上传
     *
     * @param file 文件
     * @param path 文件上传路径
     * @return
     * @throws IOException
     */
    public static String uploadOne(MultipartFile file, String path) throws IOException {
//        String uploudTime = FileService.getUploudTime();
        //新的文件存放路径加上新的文件名
//        String newPath = path + "flies" + "/" + FileService.getFileName(file.getOriginalFilename());
        String newPath = path + "flies" + "/" + file.getOriginalFilename();
        File file1 = new File(newPath);
        //判断文件目录是否存在
        if (!file1.getParentFile().exists()) {
            //创建文件存放目录
            //无论是几个/，都是创建一个文件夹
            //mkdirs(): 创建多层目录，如：E:/upload/2019
            //mkdir(): 只创建一层目录，如：E:upload
            //如果不加这一行不会创建新的文件夹，会报系统找不到路径
            file1.getParentFile().mkdirs();
        }
        //存储文件
        file.transferTo(file1);
        //去掉目录名，保留文件总体路径，通过该路径访问图片
        String filename = newPath.substring(newPath.lastIndexOf(path)).replace(path, "");
        return filename;
    }

//    /**
//     * 多文件上传
//     *
//     * @param files 文件
//     * @param path  文件上传路径
//     * @return
//     * @throws IOException
//     */
//    public static String uploadMore(MultipartFile[] files, String path) throws IOException {
//        //多文件文件名
//        String uploadName = null;
//        String uploudTime = UploadService.getUploudTime();
//        for (MultipartFile file : files) {
//            //新的文件存放路径加上新的文件名
//            String newPath = path + uploudTime + "/" + UploadService.getFileName(file.getOriginalFilename());
//            File file1 = new File(newPath);
//            //判断文件目录是否存在
//            if (!file1.getParentFile().exists()) {
//                //创建文件存放目录
//                //无论是几个/，都是创建一个文件夹
//                //mkdirs(): 创建多层目录，如：E:/upload/2019
//                //mkdir(): 只创建一层目录，如：E:upload
//                //如果不加这一行不会创建新的文件夹，会报系统找不到路径
//                file1.getParentFile().mkdirs();
//            }
//            //存储文件
//            file.transferTo(file1);
//            if (uploadName == null) {
//                uploadName = newPath.substring(newPath.lastIndexOf(path)).replace(path, "");
//            } else {
//                uploadName = uploadName + "," + newPath.substring(newPath.lastIndexOf(path)).replace(path, "");
//            }
//        }
//        return uploadName;
//    }

//    /**
//     * 下载文件
//     * @param name
//     * @param response
//     * @throws Exception
//     */
//    public void logDownload(String name, HttpServletResponse response) throws Exception {
//        File file = new File("D:\\ruoyi\\uploadPath\\flies" + File.separator + name);
//
//        if (!file.exists()) {
//            System.out.println(name + "文件不存在");
//        }
//        response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
//        response.addHeader("Content-Disposition", "attachment;fileName=" + name);
//
//        byte[] buffer = new byte[1024];
//        try (FileInputStream fis = new FileInputStream(file);
//             BufferedInputStream bis = new BufferedInputStream(fis)) {
//
//            OutputStream os = response.getOutputStream();
//
//            int i = bis.read(buffer);
//            while (i != -1) {
//                os.write(buffer, 0, i);
//                i = bis.read(buffer);
//            }
//        }
//    }
}
